package GUI;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import ClassesBasicas.Convenio;
import Excecao.ConvenioExistenteException;
import Excecao.ConvenioInexistenteException;
import Negocio.Fachada;

public class MenuConvenio {
	public static void telaConvenio() throws ConvenioInexistenteException{

		Scanner opcao = new Scanner(System.in);
		int op;
		do {
			System.out.println("                                             __________________________________________________________");
			System.out.println("");
			System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
			System.out.println("                                             __________________________________________________________");
			System.out.println("");
			System.out.println("");
			System.out.println("                                                               MENU CADASTRO CONVENIO");
			System.out.println("");
			System.out.println("                                                      Inserir..................................1");
			System.out.println("                                                      Remover..................................2");
			System.out.println("                                                      Consultar................................3");
			System.out.println("                                                      Alterar..................................4");
			System.out.println("                                                      Listar...................................5");
			System.out.println("                                                      Voltar...................................0");
			System.out.println("");
			System.out.println("");
			System.out.print("                                                     > Selecione sua opcao:");
			op = opcao.nextInt();
			if (op ==1){
				inserirConvenio();
			}else if (op == 2){
				excluirConvenio();
			}else if (op ==3){
				consultarConvenio();
			}else if (op ==4){
				atualizarConvenio();
			}else if(op == 5){
				listarConvenios();
			}else{
				System.out.println("                                                   Opcao Invalida! Favor Digitar Novamente.");
			}
		}while (op!=0);
	}

	
	public static void inserirConvenio(){
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                      INSERIR");
		System.out.println("");
		System.out.print("                                                            Nome:");
		String nome = opcao.nextLine();
		System.out.print("                                                            CNPJ:");
		String cnpj = opcao.nextLine();
		System.out.print("                                                            Valor:");
		double valor = opcao.nextDouble();
		

		Convenio convenio = new Convenio(nome.toUpperCase(), cnpj, valor);
		Fachada f1 = Fachada.obterInstancia(); 

		try {
			f1.cadastrar(convenio);
			System.out.println("                                                            Convenio Inserido com Sucesso!");

		}catch (ConvenioExistenteException ex) {
			System.err.println(ex);
		}
	}

	public static void excluirConvenio() throws ConvenioInexistenteException{
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                        EXCLUIR");
		System.out.println("");
		System.out.print("                                                            Digite o nome referente:");
		String nome = opcao.nextLine();
		Fachada f1 = Fachada.obterInstancia();
		try {
			Convenio c = Fachada.obterInstancia().procurarConvenio(nome);
			f1.remover(String.valueOf(c.getCodigo()));
			System.out.println("                                                            Convenio removido com sucesso!");
		} catch(ConvenioInexistenteException ex){
			System.err.println(ex);
		}
	}


	public static void consultarConvenio(){
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                     CONSULTAR");
		System.out.println("");
		System.out.print("                                                            Digite o nome referente:");
		String nome = opcao.nextLine();

		try {
			Convenio c = Fachada.obterInstancia().procurarConvenio(nome);

			System.out.print("                                                            Nome:");
			System.out.println(c.getNome());
			System.out.print("                                                            CNPJ:");
			System.out.println(c.getCnpj());
			System.out.print("                                                            Codigo:");
			System.out.println(c.getCodigo());
			System.out.print("                                                            Valor:");
			System.out.println(c.getValor());
			System.out.println("");
			
		} catch (ConvenioInexistenteException e) {
			System.err.println(e);
		}
	}

	public static void atualizarConvenio(){
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                      ALTERAR");
		System.out.println("");
		System.out.print("                                                            Nome antigo:");
		String nomeAntigo = opcao.nextLine();
		System.out.print("                                                            Novo Nome:");
		String nome = opcao.nextLine();
		System.out.print("                                                            CNPJ:");
		String cnpj = opcao.nextLine();
		System.out.print("                                                            Valor:");
		double valor = opcao.nextDouble();
		

		Fachada f1 = Fachada.obterInstancia(); 
		try {
			Convenio convenio = f1.procurarConvenioNome(nomeAntigo.toUpperCase());
			convenio.setCnpj(cnpj);
			convenio.setNome(nome.toUpperCase());
			convenio.setValor(valor);
			f1.atualizar(convenio);
			System.out.println("                                                            Convenio alterado com Sucesso!");

		}catch (ConvenioInexistenteException ex) {
			System.err.println(ex);
		}
	}
	
	public static void listarConvenios(){
		Fachada f  = Fachada.obterInstancia();
		List<Convenio> lista = new ArrayList<Convenio>();
		lista = (List<Convenio>) f.listarConvenios();
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                      LISTAR");
		System.out.println("");
		for(Convenio c : lista){
			System.out.print("                                                            Nome:");
			System.out.println(c.getNome());
			System.out.print("                                                            CNPJ:");
			System.out.println(c.getCnpj());
			System.out.print("                                                            Codigo:");
			System.out.println(c.getCodigo());
			System.out.print("                                                            Valor:");
			System.out.println(c.getValor());
			System.out.println("");
		}		
	}
}
